import { PrefixUrl } from '@/services/aifarm/Common';
import { request } from '@umijs/max';
import { convertToOptions, convertToValueEnum } from '@/services/aifarm/Common';
/**
 * 定义常用的6个固定函数的接口。
 */

const moduleUrl = PrefixUrl + '/user/';
const SelectManyByPageUrl = moduleUrl + 'selectManyByPage';
const SelectManyUrl = moduleUrl + 'selectMany';
const SelectByIdUrl = moduleUrl + 'selectById';
const InsertOrUpdateUrl = moduleUrl + 'insertOrUpdate';
const DeleteByIdUrl = moduleUrl + 'deleteById';

/**
 * 定义用到的数据类型，例如特殊的查询字段与返回字段
 */

// 定义[性别]类型，为了下拉框
export const genders = [
  {
    value: 0,
    label: '女',
  },
  {
    value: 1,
    label: '男',
  },
];
// List页面用到
export const getGendersEnum=() => convertToValueEnum(genders);
// Edit页面用到
export const getGendersOptions=() => convertToOptions(genders);

// 自定义的查询参数，可以根据自己的需求扩展
export type selectManyParams = {
  [property: string]: any; //这个属性保证任何数据传入都不会报错
};

/**
 * 分页查询 用户表
 * @param params : 如果是分页就添加上Farm.SelectByPageParams
 */
export async function selectManyByPageForUser(params: selectManyParams & Farm.SelectByPageParams) {
  return request<Farm.ResponseInfo<Farm.ResponseListData<Farm.User>>>(SelectManyByPageUrl, {
    method: 'GET',
    params,
  });
}

/**
 * 查询所有 用户表
 */
export async function selectManyForUser() {
  return request<Farm.ResponseInfo<Farm.ResponseListData<Farm.User>>>(SelectManyUrl, {
    method: 'GET',
  });
}

/**
 * 根据ID查询 用户表
 */
export async function selectByIdForUser(userId: number) {
  return request<Farm.ResponseInfo<Farm.User>>(SelectByIdUrl, {
    method: 'GET',
    params: {
      userId,
    },
  });
}

/**
 * 保存或更新 用户表
 * @param data Partial 会为每个属性添加可选性
 * @returns number： 返回主键
 */
export async function insertOrUpdateForUser(data: Partial<Farm.User>) {
  return request<Farm.ResponseInfo<number>>(InsertOrUpdateUrl, {
    method: 'POST',
    data,
  });
}

/**
 * 删除 用户表
 * @returns number： 1 代表更系了1条数据库 ; 0 代表没有更新数据库
 */
export async function deleteByIdForUser(userId: number) {
  return request<Farm.ResponseInfo<number>>(DeleteByIdUrl, {
    method: 'GET',
    params: {
      userId,
    },
  });
}


/**
* 去重复函数：
* 表主键的作用是，是在检查重复重复时，把自己给排除掉
*/
const PhoneIsExistUrl = moduleUrl+'phoneIsExist';
export async function phoneIsExist(phone:string,userId:number) {
    return request<Farm.ResponseInfo<boolean>>(PhoneIsExistUrl, {
        method: 'GET',
        params: {
            phone,
            userId,
          },
        });
 }
